#include <stdio.h>

// En word guarda la aguja
// en res devuelve la tabla de fallos
// n es la cantidad de letras de la aguja (asume n > 1)
void buildTable(char* word, int* res, int n){
	int i = 0;
	int j = -1;
	res[0] = -1;
	char c = getchar();
	while (i < n){
		word[i] = c;
		while (j >= 0 and word[j] != c ){
			j = res[j];
		}
		i++;
		j++;
		res[i] = j;
		c = getchar();
	}
}
// busca las apariciones de la palabra aguja en la entrada estatandar (stdin)
void search (char* aguja, int* tabla, int n){
	int i = 0; // guarda la posicion actual por la que voy recorriendo el pajar
	int j = 0; // guarda la posicion actual por la que voy recorriendo la aguja
	char c = getchar();
	while (c != '\n'){
		while ( j >= 0 && c != aguja[j]){
			j = tabla[j];
		}
		i++;
		j++;
		// si llegue al final de la aguja => 
		// devuelvo la posición en que la aguja empieza en el pajar
		if (j == n) {	
			printf("\n%d", i-n);
			j = tabla[j];
		}
		c = getchar();
	} 
}

int main(int argc, char *argv[]) {
	
    int n;
    scanf("%d\n",&n);
    while (feof(stdin) == 0) {
		if (n <= 0) {
			return 0;
		} else if (n == 1){ // si la aguja es un solo caracter => busco sus apariciones
			char caguja = getchar();
			getchar(); // leo el salto de linea
			char c = getchar();
			int pos = 0;
			while (c != '\n'){
				if (c == caguja) printf("\n%d", pos);
				c = getchar();
				pos++;
			} 
		} else if (n > 1) { // si la aguja tiene mas de un caracter
			char aguja[n];
			int tabla[n+1];
			buildTable(aguja, tabla, n);
			search(aguja, tabla, n);
		}
			
		printf("\n");
		scanf("%d\n",&n);
	}
	
	return 0;
}

